wayland/toplevel: Don't alwyas skip changing xdg_toplevel state
authorJonas Ådahl <jadahl@gmail.com>
Sat, 5 Dec 2020 14:57:45 +0000 (15:57 +0100)
committerJonas Ådahl <jadahl@gmail.com>
Mon, 7 Dec 2020 19:37:29 +0000 (20:37 +0100)
We only called xdg_toplevel.(un)set_maximize() if the toplevel layout
changed, but this misses the case when the compositor had changed the
maximized state. Change it to call the xdg_toplevel request if either
the local layout changed, or if the layout differs from the current
state.

This fixes an issue where one couldn't unmaximize a window by double
clicking the titlebar that, had previously been maximized e.g. using a
keyboard binding.

Do the same for fullscreen.

gdk/wayland/gdksurface-wayland.c

index c152acf3e582c14cbb5323b6403132dac5e34a7b..9ce5669bacacb1e8818788756f0f5c504474ee2f 100644 (file)
@@ -4876,6 +4876,8 @@ did_maximize_layout_change (GdkToplevel       *toplevel,
     return TRUE;
 
   if (gdk_toplevel_layout_get_maximized (impl->toplevel.layout) !=
+      gdk_toplevel_layout_get_maximized (layout) ||
+      !!(surface->state & GDK_TOPLEVEL_STATE_MAXIMIZED) !=
       gdk_toplevel_layout_get_maximized (layout))
     return TRUE;
 
@@ -4893,6 +4895,8 @@ did_fullscreen_layout_change (GdkToplevel       *toplevel,
     return TRUE;
 
   if (gdk_toplevel_layout_get_fullscreen (impl->toplevel.layout) !=
+      gdk_toplevel_layout_get_fullscreen (layout) ||
+      !!(surface->state & GDK_TOPLEVEL_STATE_FULLSCREEN) !=
       gdk_toplevel_layout_get_fullscreen (layout))
     return TRUE;